package com.dingding.service.userorderservice;

import java.util.List;

import com.dingding.bean.api.wechat.WechatPayResult;
import com.dingding.bean.databean.push.PushCompetitiveOrder;
import com.dingding.bean.databean.request.ReqCancelOrder;
import com.dingding.bean.databean.request.ReqConfirmArrival;
import com.dingding.bean.databean.request.ReqGetLastUserOrder;
import com.dingding.bean.databean.request.ReqGetUserOrder;
import com.dingding.bean.databean.request.ReqPassengerPay;
import com.dingding.bean.databean.request.ReqPayOrder;
import com.dingding.bean.databean.request.ReqQueryOrderResult;
import com.dingding.bean.databean.response.DataResponse;
import com.dingding.bean.entity.Userorder;
import com.dingding.common.core.beans.Userordert;

/**
 * 
 * @ClassName: IUserOrderService 
 * @Description: 用户订单service接口
 * @author cheshaowei
 * @date 2015-10-21 上午10:43:12
 */
public interface IUserOrderService {
	
	/**
	 * @Title: passengerPay
	 * @Description: 乘客支付
	 * @param reqPassengerPay 乘客支付-客户端请求参数
	 * @param dataResponse 响应对象
	 * @author yhq
	 * @return void
	 * @throws
	 * @Override
	 */
	public void passengerPay(ReqPassengerPay reqPassengerPay,DataResponse dataResponse);
	
	/**
	 * @Title: passengerPay
	 * @Description: 乘客支付
	 * @param reqPassengerPay 乘客支付-客户端请求参数
	 * @author fengshuonan
	 * @return void
	 */
	public void payOrder(ReqPayOrder reqPassengerPay,DataResponse dataResponse);
	
	/**
	 * @Title: sendEmail 
	 * @Description: 一句话描述方法的作用
	 * @param @param object
	 * @param @param userordert
	 * @param @return 
	 * @author 姓名
	 * @return boolean
	 * @throws
	 */
	public boolean sendEmail(Object object,Userordert userordert);
	
	/**
	 * @Title: passengerPay 
	 * @Description: 乘客扣款
	 * @param oid 订单Id
	 * @author yhq
	 * @return PushCompetitiveOrder    返回类型 
	 * @throws
	 */
	public PushCompetitiveOrder passengerDebit(Userordert userordert,PushCompetitiveOrder pushCompetitiveOrder,DataResponse dataResponse);
	
	/**
	 * @Title: confirmArrival
	 * @Description: 确认到达
	 * @param reqConfirmArrival 确认到达-客户端请求参数
	 * @param dataResponse 响应对象
	 * @author yhq
	 * @return void
	 * @throws
	 * @Override
	 */
	public void confirmArrival(ReqConfirmArrival reqConfirmArrival,DataResponse dataResponse);
	
	/**
	 * @Title: cancelOrder
	 * @Description: 取消订单
	 * @param reqCancelOrder 取消订单客户端请求参数
	 * @param dataResponse 响应对象
	 * @author yhq
	 * @return void
	 * @throws
	 * @Override
	 */
	public void cancelOrder(ReqCancelOrder reqCancelOrder,DataResponse dataResponse);
	
	/**
	 * @Title: LatelyOrder 
	 * @Description: 查看用户最近订单
	 * @param reqPassengerPay 查看用户最近订单客户端请求参数
	 * @param dataResponse 响应Bean
	 * @author yhq
	 * @return void    返回类型 
	 * @throws
	 */
	public void latelyOrder(ReqGetLastUserOrder reqGetLastUserOrder,DataResponse dataResponse);
	
	/**
	 * @Title: getUserOrder 
	 * @Description: 我的订单
	 * @param reqGetUserOrder  我的订单-客户端请求Bean
	 * @author yhq
	 * @return void    返回类型 
	 * @throws
	 */
	public void getUserOrder(ReqGetUserOrder reqGetUserOrder,DataResponse dataResponse);
	
	/**
	 * @Title: getUserordert 
	 * @Description: 根据订单Id获取订单详细信息
	 * @param oid 订单Id
	 * @param dataResponse 服务器数据响应封装类
	 * @return Userordert    返回类型 
	 * @throws
	 */
	public Userordert getUserordert(String oid, DataResponse dataResponse);
	
	/**
	 * @Title: passengerPaySendInfo 
	 * @Description: 乘客支付发送短信以及验证码
	 * @param passengerId 乘客Id
	 * @param driverId	司机Id
	 * @param userordert 订单对象
	 * @return void    返回类型 
	 * @throws
	 */
	public void passengerPaySendInfo(String passengerId,String driverId,Userordert userordert);
	
	/**
	 * @Title: automaticConfirmArrival 
	 * @Description: 两个小时后自动确认到达
	 * @return void    返回类型 
	 * @throws
	 */
	public void automaticConfirmArrival();
	
	/**
	 * @Title: batchConfirmArrival 
	 * @Description: 批量处理待确认到达订单
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean batchConfirmArrival();
	
	/**
	 * @Title: batchDeleteConfirmArrival 
	 * @Description: 批量删除userOrdert表中的待确认到达
	 * @param @return    设定文件 
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean batchDeleteConfirmArrival();
	
	/**
	 * @Title: getAllUserOrder 
	 * @Description: 获取订单表中的全部数据(数据迁移专用)
	 * @return List<Userorder>    返回类型 
	 * @throws
	 */
	public List<Userorder> getAllUserOrder();
	
	/**
	 * @Title: updateAllOid 
	 * @Description: 修改订单Id(将订单Id改为时间戳加六位随机数)(数据迁移专用)
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean updateAllOid(List<Userorder> userorders);
	
	/**
	 * @Title: deleteAllOid 
	 * @Description: 删除集合中的全部数据(数据迁移专用)
	 * @return boolean    返回类型 
	 * @throws
	 */
	public boolean deleteAllOid();
	
	/**
	 * @Title: verifyWechatPayResult
	 * @Description: 根据微信返回的结果验证支付结果
	 * @param wechatPayResult 微信服务器返回给我们的用户支付结果
	 * @author fengshuonan
	 * @return boolean true 验证成功  false 验证失败
	 * @throws
	 */
	public boolean verifyWechatPayResult(WechatPayResult wechatPayResult);

	
	/**
	 * @Title: wePayOrderQuery
	 * @Description: 微信支付-订单结果查询
	 * @author fengshuonan
	 * @return void
	 * @throws
	 */
	public void queryOrderResult(ReqQueryOrderResult reqWePayOrderQuery, DataResponse dataResponse);
	
	
	
}
